package com.orangeforms.webadmin.app.model;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.orangeforms.common.core.base.mapper.BaseModelMapper;
import com.orangeforms.common.core.util.MyCommonUtil;
import com.orangeforms.webadmin.app.vo.SysOrgVo;
import lombok.Data;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.Date;

/**
 * SysOrg实体对象。
 *
 * @author lixiangdong
 * @date 2022-03-29
 */
@Data
@TableName(value = "sys_org")
public class SysOrg {

    /**
     * 机构id。
     */
    @TableId(value = "org_id")
    private Long orgId;

    /**
     * 公司名称。
     */
    @TableField(value = "company_name")
    private String companyName;

    /**
     * 组织类型（0:总公司，1:建设单位，2：监理单位，3：施工单位，4：劳务队，5：设计单位）（电子档案/质保资料为org_sort）。
     */
    private Integer type;

    /**
     * 上级机构ID，一级机构为0。
     */
    @TableField(value = "parent_id")
    private Long parentId;

    /**
     * 树状结构id,本级和所有上级机构id。
     */
    @TableField(value = "org_path")
    private String orgPath;

    /**
     * 机构编码。
     */
    private String code;

    /**
     * 机构名称。
     */
    private String name;

    /**
     * 排序。
     */
    @TableField(value = "order_num")
    private Integer orderNum;

    /**
     * 可用标识  1：可用  0：不可用。
     */
    private Integer status;

    /**
     * 创建时间。
     */
    @TableField(value = "gmt_create")
    private Date gmtCreate;

    /**
     * 修改时间。
     */
    @TableField(value = "gmt_modified")
    private Date gmtModified;

    /**
     * 备注。
     */
    private String remark;

    /**
     * 所属单位。
     */
    @TableField(value = "subordinate_unit")
    private String subordinateUnit;

    /**
     * 项目名称。
     */
    @TableField(value = "project_name")
    private String projectName;

    /**
     * 等级:0:总公司 ，1：建设办、2：施工方或监理单位、3：劳务队（农民工，质量，安全）。
     */
    private Integer level;

    /**
     * 全宗号（电子档案）。
     */
    @TableField(value = "org_code")
    private String orgCode;

    /**
     * 机构基本属性： 1：机构 2：部门 3：已撤销（电子档案）。
     */
    @TableField(value = "org_type")
    private Integer orgType;

    /**
     * 监理单位关联施工方ID（电子档案）。
     */
    private Long relation;

    /**
     * 项目是否可用，二进制-右边起：1-一体化，2-前期；3-进度；4-计量；5-征地；6-合同；7-农民工；8-安全；9-质量；10-电子档案，11-质保资料。
     */
    @TableField(value = "enable_flag")
    private Long enableFlag;

    /**
     * 是否片区级机构。
     */
    @TableField(value = "is_area_level")
    private Integer isAreaLevel;

    /**
     * name LIKE搜索字符串。
     */
    @TableField(exist = false)
    private String searchString;

    public void setSearchString(String searchString) {
        this.searchString = MyCommonUtil.replaceSqlWildcard(searchString);
    }

    @Mapper
    public interface SysOrgModelMapper extends BaseModelMapper<SysOrgVo, SysOrg> {
    }
    public static final SysOrgModelMapper INSTANCE = Mappers.getMapper(SysOrgModelMapper.class);
}
